package com.bawei.library_common.image

import android.content.Context
import android.net.Uri
import android.widget.ImageView
import com.bawei.library_common.image.imageloader.FrescoImageLoader
import com.bawei.library_common.image.imageloader.GlideImageLoader
import com.bawei.library_common.image.imageloader.IImageLoader
import com.bawei.library_common.image.imageloader.PicassoImageLoader
import java.io.File

/**
 * @Author : yaotianxue
 * @Time : On 2023/5/23 15:56
 * @Description : ImageLoaderManager
 */
class ImageLoaderManager(var imageStrategy: ImageStrategy) {
    //策略模式创建不同的ImageLoader
    private var imageLoader:IImageLoader = when(imageStrategy){
        ImageStrategy.Glide -> GlideImageLoader()
        ImageStrategy.Fresco -> FrescoImageLoader()
        ImageStrategy.Picasso -> PicassoImageLoader()
    }

    /**
     * 加载不同的资源类型
     */
    fun loadIntoImageView(context: Context, source:Any, target: ImageView, config: ImageOptions){
        //is 判断source数据类型     as 是强转
        when(source){
            is String -> imageLoader.loadUrlIntoImageView(context,source,target,config)
            is File -> imageLoader.loadFileIntoImageView(context,source,target,config)
            is Uri -> imageLoader.loadUriIntoImageView(context,source,target,config)
            is Int -> imageLoader.loadResourceIntoImageView(context,source,target,config)
            is Array<*> -> imageLoader.loadByteArrayIntoImageView(context,
                source as Array<Byte>,target,config)
        }
    }

}